package com.hera.base.util;


import org.apache.commons.lang.StringUtils;

import com.hera.base.util.exception.ValidationException;
import com.vaadin.ui.AbstractTextField;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.TextField;

public class InputData {


	public static String getStringDataCase(AbstractTextField campo,String nombreCampo){
		String value=campo.getValue();
		validarRequerido(value, campo, nombreCampo);			
		return value;
	}
	public static String getStringDataCase(AbstractTextField campo){
		String value=campo.getValue();
		validarRequerido(value, campo, null);			
		return value;
	}
	
	
	public static String getStringData(AbstractTextField campo,String nombreCampo){
		return getStringDataCase(campo,nombreCampo).toUpperCase().trim();
	}
	public static String getStringData(AbstractTextField campo){
		return getStringData(campo,null);
	}
	
	public static Integer getIntegerData(AbstractTextField campo,String nombreCampo){
		Integer value=null;
		try{
			value=Integer.parseInt(campo.getValue());
		}catch(Exception e){}
		validarRequerido(value, campo, nombreCampo);
		return value;
	}
	public static Integer getIntegerData(TextField campo){
		return getIntegerData(campo,null);
	}
	
	public static Long getLongData(AbstractTextField campo,String nombreCampo){
		Long value=null;
		try{
			value=Long.parseLong(campo.getValue());
		}catch(Exception e){}
		validarRequerido(value, campo, nombreCampo);
		return value;
	}
	public static Long getLongData(TextField campo){
		return getLongData(campo,null);
	}
	
	public static Double getDoubleData(AbstractTextField campo,String nombreCampo){
		Double value=null;
		try{
			value=Double.parseDouble(campo.getValue());
		}catch(Exception e){}
		validarRequerido(value, campo, nombreCampo);
		return value;
	}
	
	public static <T> T getObjectData(ComboBox combo,Class<T> clase,String nombreCampo){
		Object value=combo.getValue();
		if(combo.getStyleName()!=null){
			if(combo.getStyleName().trim().equalsIgnoreCase(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO)){
				if(value==null||StringUtils.isEmpty(value+"")){
					combo.addStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);
					combo.focus();
					throw new ValidationException(Constantes.CODIGO_MENSAJE.COMBO_REQUERIDO,nombreCampo);
				}
			}
		}		
		return (T)value;
	}
	public static <T> T getObjectData(ComboBox combo,Class<T> clase){
		return getObjectData(combo, clase, null);
	}
	

	public static void validarRequerido(Object valor,AbstractTextField campo,String nombreCampo){
		String styleName=campo.getStyleName();
		if(styleName!=null){
			if(styleName.trim().contains("fieldRequired")){
				if(valor==null||StringUtils.isEmpty(valor+"")){
					campo.addStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
					campo.focus();
					throw new ValidationException(Constantes.CODIGO_MENSAJE.CAMPO_REQUERIDO,nombreCampo);
				}
			}
		}		
	}
	
	public static Boolean getBooleanData(CheckBox campo, String nombreCampo){
		Boolean value=campo.getValue();
		//validarRequerido(value, campo, nombreCampo);			
		return value;
	}
	
}
